package utilidades;

import java.io.*;
import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import clasesBasicas.Empresa;

/** Clase que extrae los datos del html, que está guardado en un fichero. Esto se implementa en el lado del servidor.
 * @author kevincifuentes
 *
 */
public class EstractorDeDatos {

	int EMPRESAS=35;

	boolean comienzo=false;

	boolean fin=false;

	int ELEMENTOS=8;

	int contador=0;

	int contemp=0;

	ArrayList<Empresa> listaemp = new ArrayList<Empresa>();

	Empresa tempresa=new Empresa();

	
	/** Método que devuelve la lista de las empresas.
	 * @return
	 */
	public ArrayList<Empresa>  getLista()
	{
		return listaemp;
	}



	/** Método para extraer los datos del archivo que contiene el html
	 * @param archivo El nombre del archivo de donde se obtienen los datos
	 */
	public void ExtractorDeDatos (String archivo) 
	{

		File farchivo = new File (archivo);

		FileReader fr = null;
		try {
			fr = new FileReader (farchivo);
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			System.out.println("error EDD1");
		}

		BufferedReader br = new BufferedReader(fr);

		String linea = null;
		try {
			linea = br.readLine();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			System.out.println("error EDD2");
		}

		while (linea!=null)

			// while ((linea!=null)||(contemp<EMPRESAS))//lee linea una por una hasta le final
		{

			String texto="";

			boolean eshtml=false;

			for(int i=0;i<linea.length();i++)//Procesa linea, quitandole todo el codigo 

			{
				char temp=linea.charAt(i);

				if (temp=='<'&&eshtml==false)

				{

					eshtml=true;

				}

				else if (temp=='>'&&eshtml==true)

				{

					eshtml=false;

				}

				else if (eshtml==false&&temp!='\n'&&temp!=' '&&temp!='\t')

				{

					texto=texto+temp;

				}
			}

			//metiendolos en su sitio de clase empresa

			// System.out.println(texto);
			//			metiendolos en su sitio de clase empresa

			// System.out.println(texto);

			if(texto!=""&&comienzo==true && EMPRESAS!=0)//Procesa los datos encontrados 

			{
				//				System.out.println(texto);
				switch (contador)

				{

				case 0:tempresa.setNombre(texto);

				break;

				case 1:tempresa.setUltimo(texto.replace(",","."));

				break;

				case 2:

					tempresa.setDiferencia(texto.replaceAll(",",".").replaceAll("%",""));

					break;

				case 3:
					tempresa.setVolumen(texto.replace(".",""));

					break;

				case 5:
					tempresa.setMaximo(texto.replace(",","."));

					break;

				case 6: tempresa.setMinimo(texto.replace(",","."));

				break;


				case 7:
					DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
					Date temp=Calendar.getInstance().getTime();
					texto=df.format(temp)+" "+texto;
					tempresa.setHoraDeInfo(Timestamp.valueOf(texto)); 


					break;

				}

				if (contador>=7)
				{
					//System.out.println(tempresa.nombre);
					Empresa empresafinal = new Empresa(tempresa.nombre,tempresa.ultimo,tempresa.diferencia,tempresa.volumen,tempresa.maximo,tempresa.minimo,tempresa.horaDeInfo);
					//System.out.println(empresafinal.toString());
					// tempresa.mostrar();
					listaemp.add(empresafinal);
					//					listaEmpresas.put(empresafinal.nombre, empresafinal);
					//System.out.println(contador);
					contador=0;
					EMPRESAS--;
					//					System.out.println(EMPRESAS);
				}

				else contador++;
				//partir de aqui vienen los datos que nos interesan

			}
			else if((comienzo==false)&&(texto.equals("Abertis")))//Detecta que a 
			{
				//				System.out.println("aqui si");
				comienzo=true;
				//				System.out.println(texto);
				tempresa.setNombre(texto);

				contador++;

			}

			try {
				linea = br.readLine();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				System.out.println("error EDD3");
			}
		}
	}

	//			listaemp.add(empresafinal);

	// contemp++;

	//	public void mostrar ()
	//
	//	{
	//	
	//		for (int i= 0 ; i<empresasImportantes.length;i++)
	//		{
	//			
	//			Empresa temp=listaEmpresas.get(empresasImportantes[i]);
	//			//System.out.println(temp+"\n");
	//			temp.mostrar();
	//		}
	//
	//	}


	//	public static void main(String[] args) throws IOException {
	//
	//		// TODO Auto-generated method stub
	//	
	//		EstractorDeDatos nuevo= new EstractorDeDatos("salida.txt");
	//	
	//		nuevo.mostrar();
	//	//
	//		}
	//	

}

